package com.superman.supermarket.client.widget.listbox;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;

/**
 * 下拉选择框
 * 
 * @author superman
 * @version 2018年8月3日下午3:32:30
 */
public class MyListBox extends Composite {

	interface MyListBoxUiBinder extends UiBinder<Widget, MyListBox> {
	}

	private static MyListBoxUiBinder uiBinder = GWT.create(MyListBoxUiBinder.class);

	@UiField
	ListBox listbox;
	@UiField
	HTML namehtml, texthtml;

	/**
	 * 构造方法
	 * 
	 * @author superman
	 * @version 2018年8月3日 下午3:32:32
	 */
	public MyListBox() {
		initWidget(uiBinder.createAndBindUi(this));
	}

	@UiHandler("listbox")
	void addChangeHandler(ChangeEvent event) {
		texthtml.setText(getSelectedItem());
	}

	/**
	 * 添加选项
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午9:17:05
	 * @param item
	 * @param value
	 */
	public void addItem(String item, String value) {
		listbox.addItem(item, value);
	}

	/**
	 * 获取选中的文字
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午9:18:03
	 * @return value
	 */
	public String getSelectedItem() {
		return listbox.getItemText(listbox.getSelectedIndex());
	}

	/**
	 * 返回选中的值
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午9:17:02
	 * @return selectedIndex
	 */
	public String getValue() {
		return listbox.getValue(listbox.getSelectedIndex());
	}

	/**
	 * 选中
	 * 
	 * @author superman
	 * @version 2018年8月21日 上午12:30:03
	 * @param value
	 */
	public void setByText(String value) {
		for (int i = 0; i < listbox.getItemCount(); i++) {
			String v = listbox.getItemText(i);
			if (v.equals(value)) {
				listbox.setSelectedIndex(i);
				texthtml.setText(value);
				return;
			}
		}
	}

	/**
	 * 设置默认的显示
	 * 
	 * @author superman
	 * @version 2018年8月20日 下午9:23:44
	 */
	public void setDefaultText() {
		texthtml.setText(getSelectedItem());
	}

	/**
	 * 设置名称的文字.可用于uibinder
	 * 
	 * @author superman
	 * @version 2018年7月18日 下午10:08:11
	 * @param name
	 */
	public void setName(String name) {
		this.namehtml.setText(name);
	}

	/**
	 * 设置默认选中的值
	 * 
	 * @author superman
	 * @version 2018年8月21日 上午12:27:43
	 * @param value
	 */
	public void setValue(String value) {
		for (int i = 0; i < listbox.getItemCount(); i++) {
			String v = listbox.getValue(i);
			if (v.equals(value)) {
				listbox.setSelectedIndex(i);
				texthtml.setText(listbox.getItemText(i));
				return;
			}
		}
	}

}
